/*
 * Copyright (c) 2020-2025, Qingdao Digital Intelligent Ship & Ocean Technology Co., Ltd.
 * All rights reserved.
 *
 * This file is part of FastCAE and is distributed under the terms of the
 * BSD 3-Clause License. See the LICENSE file in the project root for details.
 */

#ifndef _FITK_PHENGLEI_VISCOUSMODEL__H___
#define _FITK_PHENGLEI_VISCOUSMODEL__H___
 
#include "FITKInterfaceFlowPHengLEIAPI.h"
#include "FITK_Interface/FITKInterfaceFlowPHengLEI/FITKPHengLEIAbsSolver.h"
#include "FITK_Kernel/FITKCore/FITKAbstractNDataObject.h"
#include <QString>


namespace Core
{
    class FITKParameter;
}

namespace Interface
{
	class FITKPHengLEIViscousType;
	/**
	 * @brief  ճ��ģ����
	 * @author liuzhonghua (liuzhonghuaszch@163.com)
	 * @date   2024-08-21
	 */
	class FITKFlowPHengLEIAPI FITKPHengLEIViscousModel : public Core::FITKAbstractNDataObject
	{
	public:
		/**
		 * @brief Construct a new FITKPHengLEIViscousModel object
		 * @author LiBaojun (libaojunqd@foxmail.com)
		 * @date 2024-07-18
		 */
		FITKPHengLEIViscousModel();
		/**
		 * @brief Destroy the FITKPHengLEIViscousModel object
		 * @author LiBaojun (libaojunqd@foxmail.com)
		 * @date 2024-07-18
		 */
		virtual ~FITKPHengLEIViscousModel();
		/**
		 * @brief ��ȡճ��ģ�Ͳ���
		 * @return  FITKParameter
		 * @author WangKai (wang_starry@outlook.com)
		 * @date 2024-10-05
		 */
		Core::FITKParameter* getAdditionalVicousModelData();
		/**
		 * @brief ����ճ��ģ�Ͳ���
		 * @params data
		 * @author WangKai (wang_starry@outlook.com)
		 * @date 2024-10-05
		 */
		void setAdditionalVicousModelData(Core::FITKParameter* data);
		/**
		 * @brief ����ճ��ģ������
		 * @params viscousType
		 * @author WangKai (wang_starry@outlook.com)
		 * @date 2024-10-05
		 */
		void setViscousType(FITKPHengLEIViscousType* viscousType);
		/**
		 * @brief ��ȡ��������
		 * @return  FITKPHengLEIAbstractInFlowType
		 * @author WangKai (wang_starry@outlook.com)
		 * @date 2024-10-05
		 */
		FITKPHengLEIViscousType* getViscousType();
		/**
		 * @brief   ��ȡ��ǰ��������
		 * @author  WangKai (aurora_starry@outlook.com)
		 * @date    2025-07-31
		 */
		FITKPHengLEIAbsSolver::PHengLEIViscousType getViscousEnumType();
		/**
		 * @brief   ���õ�ǰ��������
		 * @author  WangKai (aurora_starry@outlook.com)
		 * @date    2025-07-31
		 */
		void setViscousEnumType(FITKPHengLEIAbsSolver::PHengLEIViscousType type);
	private:
		QString _name{};
		/**
		 * @brief ճ��ģ�Ͳ���
		 * @author WangKai (wang_starry@outlook.com)
		 * @date 2024-10-05
		 */
		Core::FITKParameter* _additionalViscous{};
		/**
		 * @brief ճ��ģ������
		 * @author  WangKai (aurora_starry@outlook.com)
		 * @date    2025-07-31
		 */
		FITKPHengLEIViscousType* _viscousType{};
		/**
		 * @brief
		 * @author  WangKai (aurora_starry@outlook.com)
		 * @date    2025-07-31
		 */
		FITKPHengLEIAbsSolver::PHengLEIViscousType _type{};
	};
}
#endif